package com.wtb.javatool.service.impl;

import com.fy.wetoband.utils.RequestUtil;
import com.wtb.javatool.common.R;
import com.wtb.javatool.common.TimeConversion;
import com.wtb.javatool.dao.CourseMapper;

import com.wtb.javatool.dao.ProjectCourseMapper;
import com.wtb.javatool.dao.ProjectMapper;
import com.wtb.javatool.dao.ProjectUserMapper;
import com.wtb.javatool.dto.CourseDto;
import com.wtb.javatool.entity.Course;
import com.wtb.javatool.entity.Project;
import com.wtb.javatool.entity.User;
import com.wtb.javatool.service.CourseService;
import com.wtb.javatool.common.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
@Service
public class CourseServiceImpl implements CourseService {

    private final  CourseMapper courseMapper;

    @Autowired
    public CourseServiceImpl(CourseMapper courseMapper) {
        this.courseMapper = courseMapper;
    }


    /**
     * 查询跟教师用户相关的所有课程
     *
     * @param userId 用户id
     * @param currentPage   当前页数
     * @param pageSize      每页大小
     * @return 课程信息与关联的项目和教师用户
     */
    public PageBean<CourseDto> findCoursesByUserId(Long userId,String courseName,Integer currentPage,Integer pageSize) {
        List<CourseDto> courseDtos = courseMapper.findCoursesByUserId(userId,courseName,currentPage * pageSize, pageSize);
        Integer count = courseMapper.findCoursesByUserIdCount(userId,courseName);
        PageBean<CourseDto> pageBean = new PageBean<>();
        pageBean.setRows(courseDtos);
        pageBean.setTotalCount(count);

        return pageBean;
    }

    /**
     * 根据课程ID、课程名称查询课程。
     * 如果提供了课程ID，则根据课程ID查找用户并返回单个课程的列表（或空列表如果未找到）。
     * 如果未提供课程ID但提供了课程名称，则根据课程名称查找课程并返回匹配的课程列表（或空列表如果未找到）。
     * 注意：2个参数只能选择一个进行匹配，优先ID。
     *
     * @param courseId   课程ID。
     * @param courseName 课程名。
     * @return 查找到的课程列表，如果未找到则返回空列表。
     */
    public List<Course> findCourse(Long courseId, String courseName) {
        List<Course> courses;
        if(courseId != null){
            courses  = courseMapper.findCourseByCourseId(courseId);
            return  courses;
        }else if(courseName !=null){
            courses  = courseMapper.findCourseByCourseName(courseName);
            return  courses;
        }
        else return courseMapper.findCourseByCourseId(null);
    }
}
